Descriptions
There is no desription for trigger PATOLOGIAS_BI
 
Definition
CREATE TRIGGER PATOLOGIAS_BI FOR PATOLOGIAS ACTIVE
BEFORE INSERT POSITION 0
AS
declare variable vPADRE CHAR(13);
declare variable vHIJO integer;
declare variable TAM INTEGER;
declare variable HIJOMAXIMO CHAR(13);
BEGIN
/* Trigger body */
if (NEW.ID_PATOLOGIAS IS NULL) then
BEGIN
if (new.ID_PADRE_PATOLOGIA IS NULL) then
BEGIN
NEW.ID_PADRE_PATOLOGIA = 'PADRE';
SELECT COUNT (ID_PATOLOGIAS) FROM PATOLOGIAS
WHERE
ID_PADRE_PATOLOGIA = NEW.ID_PADRE_PATOLOGIA
INTO:vHIJO;
if (vHIJO <10) then
BEGIN
NEW.ID_PATOLOGIAS = vHIJO;
NEW.hijos= 0;
END
else
exception exception_padrenoexiste;
END
ELSE
BEGIN
SELECT ID_PATOLOGIAS FROM PATOLOGIAS
WHERE
ID_PATOLOGIAS = RTRIM(NEW.ID_PADRE_PATOLOGIA)
INTO:vPADRE;
SELECT (HIJOS) FROM PATOLOGIAS
WHERE
ID_PATOLOGIAS = NEW.ID_PADRE_PATOLOGIA
INTO:vHIJO;
TAM = STRLEN(RTRIM(NEW.ID_PADRE_PATOLOGIA));
if (vPADRE IS NULL) then
BEGIN
EXCEPTION exception_padrenoexiste;
END
begin
SELECT max(ID_PATOLOGIAS) FROM PATOLOGIAS
WHERE
ID_PADRE_PATOLOGIA = NEW.ID_PADRE_PATOLOGIA
INTO: HIJOMAXIMO;
/*EVALUACION DEL NIVEL 1 */
if (STRLEN(RTRIM(NEW.ID_PADRE_PATOLOGIA))=1) then
BEGIN
IF(HIJOMAXIMO IS NULL) THEN
vHIJO=0;
ELSE
BEGIN
SELECT SUBSTR(RTRIM(ID_PATOLOGIAS),2,3) FROM PATOLOGIAS WHERE
ID_PATOLOGIAS=RTRIM(:HIJOMAXIMO)
INTO: vHIJO;
if (RTRIM(vHIJO)='00') then
vHIJO= 0;
ELSE
vHIJO = vHIJO+1;
END
IF (vHIJO<10) THEN
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO;
ELSE
if (vHIJO<100) then
BEGIN
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
END
ELSE
EXCEPTION EXCEPTION_OVER;
END
/*EVALUACION NIVEL 2*/
if (TAM = 3 ) then
BEGIN
SELECT SUBSTR(RTRIM(ID_PATOLOGIAS),4,5) FROM PATOLOGIAS WHERE
ID_PATOLOGIAS=RTRIM(:HIJOMAXIMO)
INTO: vHIJO;
if (vHIJO IS NULL) then
vHIJO=0;
ELSE
vHIJO = vHIJO+1;
IF (vHIJO <10) THEN
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO;
ELSE
if (vHIJO<100) then
BEGIN
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
END
ELSE
EXCEPTION EXCEPTION_OVER;
/* IF (vHIJO<10) THEN
BEGIN
HIJO=:vHIJO+1 ;
NEW.ID_PATOLOGIAS = RTRIM(PADRE)||'0' || vHIJO ;
END
ELSE
BEGIN
NEW.ID_PATOLOGIAS = RTRIM(PADRE)|| HIJO;
END*/
END
if (TAM = 5 ) then
BEGIN
IF (vHIJO<10) THEN
BEGIN
vHIJO=:vHIJO+1 ;
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO ;
END
ELSE
if (vHIJO<100) then
BEGIN
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
END
ELSE
EXCEPTION EXCEPTION_OVER;
END
if (TAM = 7 ) then
BEGIN
IF (vHIJO<10) THEN
BEGIN
vHIJO=:vHIJO+1 ;
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO ;
END
ELSE
BEGIN
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
END
END
if (TAM = 9 ) then
BEGIN
IF (vHIJO<10) THEN
BEGIN
vHIJO=:vHIJO+1 ;
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO ;
END
ELSE
BEGIN
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
END
END
if (TAM = 11 ) then
BEGIN
IF (vHIJO<10) THEN
BEGIN
vHIJO=:vHIJO+1 ;
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)||'0' || vHIJO;
END
ELSE
BEGIN
NEW.ID_PATOLOGIAS = RTRIM(vPADRE)|| vHIJO;
END
END
NEW.hijos= 0;
END
END
END
END
| This file was generated with EMS InterBase/FireBird Manager (www.ibmanager.com) at 09/06/2005 05:52 p.m. |
|